# 1）奇偶排序
# 给定10个整数的序列，要求对其重新排序。排序要求:
# 1.奇数在前，偶数在后；
# 2.奇数按从大到小排序；
# 3.偶数按从小到大排序。
# 样例输入：4 7 3 13 11 12 0 47 34 98
# 样例输出：47 13 11 7 3 0 4 12 34 98
#
# ls = [4,7,3,13,11,12,0,47,34,98]
# def fx(x):
#     ls1 = []
#     ls2 = []
#     for i in x:
#         if i%2==1:
#             ls1.append(i)
#             ls1.sort(reverse=True)
#         if i%2==0:
#             ls2.append(i)
#             ls2.sort()
#     ls1.extend(ls2)
#     return ls1
# print(fx(ls))

# 2）定义一个函数，功能为查找列表中的元素，
# 要求：如果有该元素，返回该元素对应的下标，
#      如果没有该元素，返回None
#
# def fx1(y,n):
#     for j in y:
#         if j == n:
#             m = y.index(j)
#             return m
#     return
# lst = [4,7,3,13,11,12,0,47,34,98]
# print(fx1(lst,10))

# 3）使用列表推导式过滤出以下列表中长度大于3的单词
# words = ['apple', 'banana', 'pie', 'orange',
#         'kiwi']

# words = ['apple', 'banana', 'pie', 'orange','kiwi']
# a = [b for b in words if len(b)>3]
# print(a)

# 4）自己总结，并写道纸上上交
# --》你都接触过哪些排序？
# --》默写一个冒泡排序代码，冒泡排序的思路是什么
# --》python的推导式是什么，有没有元组推导式，为什么？
# --》异常处理的代码执行流程？
#
# 5）国家列表
# a = ['中国', '阿根廷', '澳大利亚', '阿尔及利亚',
#      '哈萨克斯坦', '俄罗斯', '巴西', '美国', '加拿大',
#      '印度']
# 对应的国土面积
# b = [960, 278, 769.2, 238.1,
#     272.2, 1709.8, 851.4, 937, 998.4, 298]
# 根据国土面积对国家进行排序，打印结果（按国土大小顺序顺序）：
# 第1大的国土面积：国家名 = 国土面积
# 第2大的国土面积：国家名 = 国土面积
# ......
#
a= ['中国', '阿根廷', '澳大利亚', '阿尔及利亚', '哈萨克斯坦', '俄罗斯', '巴西', '美国', '加拿大', '印度']
b = [960, 278,769.2 ,238.1, 272.2, 1709.8, 851.4, 937,998.4, 298]
def fx2(ls1,ls2):
    for i in range(0, len(ls2) - 1):  # 循环几轮
        for j in range(0, len(ls2) - i - 1):  # 每一轮的操作 两两进行比较
            # 比较
            if ls2[j] < ls2[j + 1]:
                # 互换 a,b同步进行
                ls2[j], ls2[j + 1] = ls2[j + 1], ls2[j]
                ls1[j], ls1[j + 1] = ls1[j + 1], ls1[j]
    for m in range(len(ls1)):
        #使用索引直接访问对应的国家和面积
        print (f'第{m+1}大的国土面积：{a[m]}={b[m]}')
print(fx2(a,b))


# 6)有一个学生列表，每个学生是一个字典，包含name和score。
# 使用冒泡排序根据学生的分数(score)对列表进行降序排列。
#
# 示例数据：
# students = [{'name': 'Alice', 'score': 95},
#             {'name': 'Bob', 'score': 88},
#             {'name': 'Charlie', 'score': 92}]
#
# 期望输出：
# [{'name': 'Alice', 'score': 95},
#  {'name': 'Charlie', 'score': 92},
#  {'name': 'Bob', 'score': 88}]
students = [{'name': 'Alice', 'score': 95}, {'name': 'Bob', 'score': 88}, {'name': 'Charlie', 'score': 92}]
def fx3(ls):
    # 提取姓名和分数到两个列表
    a = [student['name'] for student in ls]
    b = [student['score'] for student in ls]
    for i in range(0, len(b) - 1):  # 循环几轮
        for j in range(0, len(b) - i - 1):  # 每一轮的操作 两两进行比较
            # 比较
            if b[j] < b[j + 1]:
                # 互换
                b[j], b[j + 1] = b[j + 1], b[j]
                a[j], a[j + 1] = a[j + 1], a[j]
    # 重新组合成字典列表
    c = [{"name": name, "score": score} for name, score in zip(a, b)]
    return c
print(fx3(students))